package ExceptionAndThread.Exception;

import java.io.IOException;

/*
    try ... catch：异常处理的第二种方法，自己处理异常
    格式：
        try{
            可能产生异常的代码
        }catch(定义一个异常的变量，用来接收try种抛出的异常对象){
            异常的处理逻辑，接收异常对象之后，怎么处理异常
            一般会把异常记录到一个日志当中
        }
        ...
         catch(异常类名 变量名){
        }
     注意：
        1、try中可能有多个抛出的异常，那么就可以使用多个catch来处理这些异常
        2、如果try中产生了异常，那么就会执行catch中的异常处理逻辑，执行完毕catch中的处理逻辑，继续执行try catch之后的代码
           如果try中没有产生异常，就不会执行cathc中的异常处理逻辑，继续执行try catch之后的代码

*/

public class TryAndCatch01 {
    public static void main(String[] args) {
        try {
            demo01("a1.txt");
        } catch (IOException e) {
            System.out.println("catch 文件错误");

            /*
            Throwable类中定义了三个异常处理的方法：
            String	getMessage()        返回此 throwable 的简短消息字符串。
            String	toString()          返回此 throwable 的详细描述。
            void	printStackTrace()   将此 throwable 及其追踪输出至标准错误流。JVM默认打印此方法，信息最全面

            */
            System.out.println(e.getMessage());

        }
        System.out.println("main后续方法");
    }

    public static void demo01(String s) throws IOException {
        if (!s.equals("a.txt")) {
            throw new IOException("throw文件读取错误");
        }
        System.out.println("throw后续方法");
    }
}
